# 1、创建元组(tuple)：
# a = ()
# print(type(a))
# b = tuple()
# print(type(b))

# 2、创建元组的时候，指定初始值

a = (1, 2, 3, 4)
print(a)

# 3、元组中的元素也可以是任意类型的

# a = (1, 2, 'hello', True, [])
# print(a)

# 4、也可以通过下标访问元组中的元素，下标也是从0开始，到len - 1结束
a = (1, 2, 3, 4)
print(a[1])
print(a[-1])
# 下标超出范围时，直接抛出异常，比如：
# print(a[100])

# 5、通过切片获得元组中的一部分
# a = (1, 2, 3, 4)
# print(a[1:3])

# 6、元组同样可以使用for循环遍历元素，比如：
# a = (1, 2, 3, 4)
# for elem in a:
#     print(elem, end=' ')

# 7、可以使用 in 来判定元素是否存在，使用 index 查找元素下标，
# a = (1, 2, 3, 4)
# print(3 in a)
# print(a.index(3))

# 8、使用 + 来拼接两个元组
# 已有的元组中的元素都不能改变他们的值，拼接操作只是生成了一个更大的元组
# 并没有改变原有元组中的值
# a = (1, 2, 3)
# b = (4, 5, 6)
# print(a + b)

# 9、元组只支持 “读” 操作，不能支持修改之类的操作，
a = (1, 2, 3, 4)
# 在定义了这个a元组后，下列的程序是错误的
# a[0] = 100
# a.append(5)
# a.pop(0)
# a.extend()

# 10、当进行多元赋值时，其本质是按照元组的方式进行工作的


def getPoint():
    b = 10
    c = 20
    return b, c


x, y = getPoint()
# x, y 作为getPoint的返回值，实际上这个返回值的类型是元组类型
print(type(getPoint()))

# 元组的使用场景：
# 在协同开发的时候，比如：A写函数，B 去调用
# B 需要自己在调用函数的时候，自己传过去的实参不会被修改，‘
# 所以利用元组传参，就可以保证数据不被修改，
